﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Pay.DTO;
using Pay.TO;

namespace Pay.IService {
	public interface ILogisticsService
    {
        string Post(long id,long userid);
		
		IEnumerable<logistics_dto> Get();
        /// <summary>
        /// 新增物流信息
        /// </summary>
        /// <param name="dto"></param>
        int Add(logistics_dto dto);
        /// <summary>
        /// 更新物流信息
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        int Update(logistics_dto dto, long id);
        /// <summary>
        /// 获取物流列表
        /// </summary>
        /// <param name="Query"></param>
        /// <returns></returns>
        PagedResult<logistics_dto> Gets(LogiticsQuery Query);
        List<logistics_details_dto> GetList(long id);
        logistics_dto GetById(long id);
        logistics_dto GetModelByPayId(long OrderId);
        /// <summary>
        /// 向海关推送订单报文
        /// </summary>
        /// <returns><c>true</c>, if order was pushed, <c>false</c> otherwise.</returns>
        /// <param name="pay_infos">Pay identifier.</param>
        bool PushOrder(long pay_id);
		/// <summary>
		/// 向海关推送支付单报文
		/// </summary>
		/// <returns><c>true</c>, if pay order was pushed, <c>false</c> otherwise.</returns>
		/// <param name="pay_id">Pay identifier.</param>
		Task<bool> PushPayOrder(long pay_id);
        /// <summary>
        /// 生成物流清单Excel
        /// </summary>
        /// <returns>The detail excel.</returns>
        /// <param name="pay_Infos">Pay identifier.</param>
        LogisticsExcel LogisticsDetailExcel(List<pay_info_dto> pay_Infos);
        /// <summary>
        /// 生成物流运单Excel
        /// </summary>
        /// <returns>The no excel.</returns>
        /// <param name="pay_Infos">Pay identifier.</param>
        LogisticsExcel LogisticsNoExcel(List<pay_info_dto> pay_Infos);


    }
}
